package com.one.friend.controller.user;

import com.one.common.core.constants.HttpConstants;
import com.one.common.core.controller.BaseController;
import com.one.common.core.domain.R;
import com.one.common.core.domain.vo.LoginUserVO;
import com.one.friend.domain.user.dto.UserDTO;
import com.one.friend.domain.user.dto.UserEditDTO;
import com.one.friend.domain.user.dto.UserLoginDTO;
import com.one.friend.domain.user.vo.UserVO;
import com.one.friend.service.user.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController extends BaseController {

    @Autowired
    private IUserService iUserService;

    /**
     *      接口概述    发送验证码功能
     *      接口地址    /user/sendCode
     *      请求方法    post
     *      请求参数    UserDTO
     *      响应数据    void
     */
    @PostMapping("/sendCode")
    public R<Void> sendCode(@RequestBody UserDTO userDTO){
        return toR(iUserService.sendCode(userDTO));
    }

    /**
     *      接口概述    用户登录，通过验证码的方式
     *      接口地址    /user/login
     *      请求方法    post
     *      请求参数    UserDTO
     *      响应数据    String
     */
    @PostMapping("/code/login")
    public R<String> login(@RequestBody UserLoginDTO userLoginDTO){
        return R.ok(iUserService.login(userLoginDTO));
    }

    //退出登录
    @DeleteMapping("/logout")
    public R<Void> logout(@RequestHeader(HttpConstants.AUTHENTICATION) String token){
        return toR(iUserService.logout(token));
    }

    //获取当前用户信息
    @GetMapping("/info")
    public R<LoginUserVO> info(@RequestHeader(HttpConstants.AUTHENTICATION) String token){
        return iUserService.info(token);
    }


    //获取当前用户详情，个人中心
    @GetMapping("/detail")
    public R<UserVO> detail(){
        return R.ok(iUserService.detail());
    }

    @PostMapping("/edit")
    public R<Void> edit(@RequestBody UserEditDTO userEditDTO){
        return toR(iUserService.edit(userEditDTO));
    }
}
